<?php

class Tree
{
	public $_rootNodes = array();
	public $_nodes = array();
	
	/**
	 * Return tree node by id.
	 *
	 * @param integer $id
	 * @return TreeNode
	 */
	public function getNodeById($id)
	{
		if (!isset($this->_nodes[$id])) {
			return null;
		}
		return $this->_nodes[$id];
	}
	
	/**
	 * Add tree node.
	 * 
	 * @param TreeNode $node
	 * @return void
	 */
	public function addNode(TreeNode $node)
	{
		$this->_nodes[$node->getId()] = $node; 
	}
	
	/**
	 * Add root tree node.
	 * 
	 * @param integer $id
	 * @return void
	 */
	public function addRootNodeId($id)
	{
		$this->_rootNodes[] = $id;
	}
	
	/**
	 * @todo !!! метод возможно работает некорректно
	 */
	public function toArray()
	{
		$array = array();
		foreach ($this->_rootNodes as $rootNodeId) {
			$rootNode = $this->getNodeById($rootNodeId);
			$id = $rootNode->getId();
			$element = $rootNode->getElement();
			$value = $element['value'];
			
			$ar = array(
				'id' => $id,
				'value' => $value,
			);
			$rootNode->getChilds();
		}
	}
}

